Verified secure compilation for mixed-sensitivity concurrent programs
نویسندگان
چکیده
Proving only over source code that programs do not leak sensitive data leaves a gap between reasoning and reality can be filled by accounting for the behaviour of compiler. Furthermore, software does always have luxury limiting itself to single-threaded computation with resources statically dedicated each user ensure confidentiality their data. This results in mixed-sensitivity concurrent programs, which might reuse memory shared threads hold different sensitivity levels at times; such compiler must preserve value-dependent coordination despite impact concurrency. Here we demonstrate, using Isabelle/HOL, it is feasible verify preserves noninterference, strictest kind property, programs. First, present notions refinement notion noninterference designed support As proving noninterference-preserving considerably more complex than standard refinements typically used semantics-preserving compilation, our include decomposition principle separates semantics-preservation from security-preservation concerns. Second, demonstrate these are applicable verified secure exercising them on single-pass synchronise mutex locks, generic imperative language RISC-style assembly language. Finally, execute nontrivial program modelling real-world use case, thus preserving its source-level properties down an assembly-level model automatically. (Full abstract paper)
منابع مشابه
Per-Thread Compositional Compilation for Confidentiality-Preserving Concurrent Programs
Recent work has demonstrated that per-thread compositional verification of value-dependent noninterference is feasible for concurrent programs: Murray et al. [9] presented a type system that, when applied individually to each of the threads of a concurrent program, can be used to establish that the entire program does not at any time leak high-classified data to any presently low-classified, re...
متن کاملSemantics-Based Analysis for Optimizing Compilation of Concurrent Programs
Concurrent programming languages provide a paradigm for describing programs with complicated communication networks in a clear way. They support the creation of multiple computational units called processes that run concurrently in a program together with the mechanism for communication between processes, thereby simplifying the programming of synchronization and communication. Among them, conc...
متن کاملVerified Compilation for Shared-Memory C
We present a new architecture for specifying and proving optimizing compilers in the presence of shared-memory interactions such as buffer-based system calls, shared-memory concurrency, and separate compilation. The architecture, which is implemented in the context of CompCert, includes a novel interaction-oriented model for C-like languages, and a new proof technique, called logical simulation...
متن کاملCrellvm: Verified Credible Compilation for LLVM
Production compilers such as GCC and LLVM are large complex software systems, for which achieving a high level of reliability is hard. Although testing is an effective method for finding bugs, it alone cannot guarantee a high level of reliability. To provide a higher level of reliability, many approaches that examine compilers’ internal logics have been proposed. However, none of them have been...
متن کاملEfficient Maliciously Secure Two Party Computation for Mixed Programs
We propose a new approach for practical secure two-party computation (2PC) achieving security in the presence of malicious adversaries. Given a program to compute, the idea is to identify subcomputations that depend on only one or neither of the parties’ private inputs. Such computations can be secured at significantly lower cost, using different protocol paradigms for each case. We then show h...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
ژورنال
عنوان ژورنال: Journal of Functional Programming
سال: 2021
ISSN: ['0956-7968', '1469-7653']
DOI: https://doi.org/10.1017/s0956796821000162